<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8" />
    <title>dependency graph</title>
    <style>
      .node:active path,
      .node:hover path,
      .node.current path,
      .node:active polygon,
      .node:hover polygon,
      .node.current polygon
       {
        stroke: fuchsia;
        stroke-width: 2;
      }
      .edge:active path,
      .edge:hover path,
      .edge.current path,
      .edge:active ellipse,
      .edge:hover ellipse,
      .edge.current ellipse {
        stroke: fuchsia;
        stroke-width: 3;
        stroke-opacity: 1;
      }
      .edge:active polygon,
      .edge:hover polygon,
      .edge.current polygon {
        stroke: fuchsia;
        stroke-width: 3;
        fill: fuchsia;
        stroke-opacity: 1;
        fill-opacity: 1;
      }
      .edge:active text,
      .edge:hover text {
        fill: fuchsia;
      }
      .cluster path {
        stroke-width: 3;
      }
      .cluster:active path,
      .cluster:hover path {
        fill: #ffff0011;
      }
    </style>
  </head>
  <body>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.47.1 (20210417.1919)
 -->
<!-- Title: dependency&#45;cruiser output Pages: 1 -->
<svg width="670pt" height="790pt"
 viewBox="0.00 0.00 670.23 790.04" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 786.04)">
<title>dependency&#45;cruiser output</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-786.04 666.23,-786.04 666.23,4 -4,4"/>
<!-- bin/smcat -->
<g id="node1" class="node">
<title>bin/smcat</title>
<g id="a_node1"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/bin/smcat" xlink:title="bin/&lt;BR/&gt;&lt;B&gt;smcat&lt;/B&gt;">
<path fill="#ffffcc" stroke="black" d="M363.1,-61.75C363.1,-61.75 326.43,-61.75 326.43,-61.75 322.1,-61.75 317.77,-57.42 317.77,-53.08 317.77,-53.08 317.77,-44.42 317.77,-44.42 317.77,-40.08 322.1,-35.75 326.43,-35.75 326.43,-35.75 363.1,-35.75 363.1,-35.75 367.43,-35.75 371.77,-40.08 371.77,-44.42 371.77,-44.42 371.77,-53.08 371.77,-53.08 371.77,-57.42 367.43,-61.75 363.1,-61.75"/>
<text text-anchor="start" x="336.77" y="-51.55" font-family="Helvetica,sans-Serif" font-size="9.00">bin/</text>
<text text-anchor="start" x="330.77" y="-42.55" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">smcat</text>
</a>
</g>
</g>
<!-- package.json -->
<g id="node2" class="node">
<title>package.json</title>
<g id="a_node2"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/package.json" xlink:title="./&lt;BR/&gt;&lt;B&gt;package.json&lt;/B&gt;">
<path fill="#ffee44" stroke="black" d="M222.23,-117C222.23,-118.78 205.65,-120.23 185.23,-120.23 164.82,-120.23 148.23,-118.78 148.23,-117 148.23,-117 148.23,-87.95 148.23,-87.95 148.23,-86.17 164.82,-84.73 185.23,-84.73 205.65,-84.73 222.23,-86.17 222.23,-87.95 222.23,-87.95 222.23,-117 222.23,-117"/>
<path fill="none" stroke="black" d="M222.23,-117C222.23,-115.22 205.65,-113.77 185.23,-113.77 164.82,-113.77 148.23,-115.22 148.23,-117"/>
<text text-anchor="start" x="182.73" y="-105.28" font-family="Helvetica,sans-Serif" font-size="9.00">./</text>
<text text-anchor="start" x="156.23" y="-96.28" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">package.json</text>
</a>
</g>
</g>
<!-- bin/smcat&#45;&gt;package.json -->
<g id="edge1" class="edge">
<title>bin/smcat&#45;&gt;package.json</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M334.78,-62.12C334.78,-74.5 334.78,-91 334.78,-91 334.78,-91 228.58,-91 228.58,-91"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="228.58,-88.9 222.58,-91 228.58,-93.1 228.58,-88.9"/>
</g>
<!-- src/cli/actions.js -->
<g id="node3" class="node">
<title>src/cli/actions.js</title>
<g id="a_node3"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/cli/actions.js" xlink:title="src/cli/&lt;BR/&gt;&lt;B&gt;actions.js&lt;/B&gt;">
<path fill="#ccffcc" stroke="black" d="M280.43,-76.97C280.43,-76.97 239.76,-76.97 239.76,-76.97 235.43,-76.97 231.1,-72.64 231.1,-68.31 231.1,-68.31 231.1,-59.64 231.1,-59.64 231.1,-55.31 235.43,-50.97 239.76,-50.97 239.76,-50.97 280.43,-50.97 280.43,-50.97 284.76,-50.97 289.1,-55.31 289.1,-59.64 289.1,-59.64 289.1,-68.31 289.1,-68.31 289.1,-72.64 284.76,-76.97 280.43,-76.97"/>
<text text-anchor="start" x="247.1" y="-66.77" font-family="Helvetica,sans-Serif" font-size="9.00">src/cli/</text>
<text text-anchor="start" x="239.1" y="-57.77" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">actions.js</text>
</a>
</g>
</g>
<!-- bin/smcat&#45;&gt;src/cli/actions.js -->
<g id="edge2" class="edge">
<title>bin/smcat&#45;&gt;src/cli/actions.js</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M317.51,-56C317.51,-56 295.35,-56 295.35,-56"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="295.35,-53.9 289.35,-56 295.35,-58.1 295.35,-53.9"/>
</g>
<!-- src/cli/make&#45;description.js -->
<g id="node4" class="node">
<title>src/cli/make&#45;description.js</title>
<g id="a_node4"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/cli/make-description.js" xlink:title="src/cli/&lt;BR/&gt;&lt;B&gt;make&#45;description.js&lt;/B&gt;">
<path fill="#ccffcc" stroke="black" d="M401.29,-26C401.29,-26 317.63,-26 317.63,-26 313.29,-26 308.96,-21.67 308.96,-17.33 308.96,-17.33 308.96,-8.67 308.96,-8.67 308.96,-4.33 313.29,0 317.63,0 317.63,0 401.29,0 401.29,0 405.63,0 409.96,-4.33 409.96,-8.67 409.96,-8.67 409.96,-17.33 409.96,-17.33 409.96,-21.67 405.63,-26 401.29,-26"/>
<text text-anchor="start" x="346.46" y="-15.8" font-family="Helvetica,sans-Serif" font-size="9.00">src/cli/</text>
<text text-anchor="start" x="316.96" y="-6.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">make&#45;description.js</text>
</a>
</g>
</g>
<!-- bin/smcat&#45;&gt;src/cli/make&#45;description.js -->
<g id="edge3" class="edge">
<title>bin/smcat&#45;&gt;src/cli/make&#45;description.js</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M344.77,-35.44C344.77,-35.44 344.77,-32.2 344.77,-32.2"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="346.87,-32.2 344.77,-26.2 342.67,-32.2 346.87,-32.2"/>
</g>
<!-- src/cli/normalize.js -->
<g id="node5" class="node">
<title>src/cli/normalize.js</title>
<g id="a_node5"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/cli/normalize.js" xlink:title="src/cli/&lt;BR/&gt;&lt;B&gt;normalize.js&lt;/B&gt;">
<path fill="#ccffcc" stroke="black" d="M572,-132.8C572,-132.8 521.33,-132.8 521.33,-132.8 517,-132.8 512.66,-128.46 512.66,-124.13 512.66,-124.13 512.66,-115.46 512.66,-115.46 512.66,-111.13 517,-106.8 521.33,-106.8 521.33,-106.8 572,-106.8 572,-106.8 576.33,-106.8 580.66,-111.13 580.66,-115.46 580.66,-115.46 580.66,-124.13 580.66,-124.13 580.66,-128.46 576.33,-132.8 572,-132.8"/>
<text text-anchor="start" x="533.66" y="-122.6" font-family="Helvetica,sans-Serif" font-size="9.00">src/cli/</text>
<text text-anchor="start" x="520.66" y="-113.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">normalize.js</text>
</a>
</g>
</g>
<!-- bin/smcat&#45;&gt;src/cli/normalize.js -->
<g id="edge4" class="edge">
<title>bin/smcat&#45;&gt;src/cli/normalize.js</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M364.96,-61.75C364.96,-80.53 364.96,-113 364.96,-113 364.96,-113 506.49,-113 506.49,-113"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="506.49,-115.1 512.49,-113 506.49,-110.9 506.49,-115.1"/>
</g>
<!-- src/cli/validations.js -->
<g id="node6" class="node">
<title>src/cli/validations.js</title>
<g id="a_node6"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/cli/validations.js" xlink:title="src/cli/&lt;BR/&gt;&lt;B&gt;validations.js&lt;/B&gt;">
<path fill="#ccffcc" stroke="black" d="M444.16,-64.6C444.16,-64.6 388.49,-64.6 388.49,-64.6 384.16,-64.6 379.83,-60.27 379.83,-55.93 379.83,-55.93 379.83,-47.27 379.83,-47.27 379.83,-42.93 384.16,-38.6 388.49,-38.6 388.49,-38.6 444.16,-38.6 444.16,-38.6 448.49,-38.6 452.83,-42.93 452.83,-47.27 452.83,-47.27 452.83,-55.93 452.83,-55.93 452.83,-60.27 448.49,-64.6 444.16,-64.6"/>
<text text-anchor="start" x="403.33" y="-54.4" font-family="Helvetica,sans-Serif" font-size="9.00">src/cli/</text>
<text text-anchor="start" x="387.83" y="-45.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">validations.js</text>
</a>
</g>
</g>
<!-- bin/smcat&#45;&gt;src/cli/validations.js -->
<g id="edge5" class="edge">
<title>bin/smcat&#45;&gt;src/cli/validations.js</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M371.82,-50C371.82,-50 373.55,-50 373.55,-50"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="373.55,-52.1 379.55,-50 373.55,-47.9 373.55,-52.1"/>
</g>
<!-- src/index&#45;node.js -->
<g id="node7" class="node">
<title>src/index&#45;node.js</title>
<g id="a_node7"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/index-node.js" xlink:title="src/&lt;BR/&gt;&lt;B&gt;index&#45;node.js&lt;/B&gt;">
<path fill="#ffffcc" stroke="black" d="M171.56,-154.37C171.56,-154.37 114.9,-154.37 114.9,-154.37 110.56,-154.37 106.23,-150.04 106.23,-145.71 106.23,-145.71 106.23,-137.04 106.23,-137.04 106.23,-132.71 110.56,-128.37 114.9,-128.37 114.9,-128.37 171.56,-128.37 171.56,-128.37 175.9,-128.37 180.23,-132.71 180.23,-137.04 180.23,-137.04 180.23,-145.71 180.23,-145.71 180.23,-150.04 175.9,-154.37 171.56,-154.37"/>
<text text-anchor="start" x="135.73" y="-144.17" font-family="Helvetica,sans-Serif" font-size="9.00">src/</text>
<text text-anchor="start" x="114.23" y="-135.17" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">index&#45;node.js</text>
</a>
</g>
</g>
<!-- src/cli/actions.js&#45;&gt;src/index&#45;node.js -->
<g id="edge6" class="edge">
<title>src/cli/actions.js&#45;&gt;src/index&#45;node.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M260.1,-77C260.1,-97.51 260.1,-135 260.1,-135 260.1,-135 186.53,-135 186.53,-135"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="186.53,-132.9 180.53,-135 186.53,-137.1 186.53,-132.9"/>
</g>
<!-- src/cli/file&#45;name&#45;to&#45;stream.js -->
<g id="node8" class="node">
<title>src/cli/file&#45;name&#45;to&#45;stream.js</title>
<g id="a_node8"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/cli/file-name-to-stream.js" xlink:title="src/cli/&lt;BR/&gt;&lt;B&gt;file&#45;name&#45;to&#45;stream.js&lt;/B&gt;">
<path fill="#ccffcc" stroke="black" d="M292.1,-42.94C292.1,-42.94 198.43,-42.94 198.43,-42.94 194.1,-42.94 189.76,-38.61 189.76,-34.28 189.76,-34.28 189.76,-25.61 189.76,-25.61 189.76,-21.28 194.1,-16.94 198.43,-16.94 198.43,-16.94 292.1,-16.94 292.1,-16.94 296.43,-16.94 300.76,-21.28 300.76,-25.61 300.76,-25.61 300.76,-34.28 300.76,-34.28 300.76,-38.61 296.43,-42.94 292.1,-42.94"/>
<text text-anchor="start" x="232.26" y="-32.74" font-family="Helvetica,sans-Serif" font-size="9.00">src/cli/</text>
<text text-anchor="start" x="197.76" y="-23.74" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">file&#45;name&#45;to&#45;stream.js</text>
</a>
</g>
</g>
<!-- src/cli/actions.js&#45;&gt;src/cli/file&#45;name&#45;to&#45;stream.js -->
<g id="edge7" class="edge">
<title>src/cli/actions.js&#45;&gt;src/cli/file&#45;name&#45;to&#45;stream.js</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M260.1,-50.92C260.1,-50.92 260.1,-49.14 260.1,-49.14"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="262.2,-49.14 260.1,-43.14 258,-49.14 262.2,-49.14"/>
</g>
<!-- src/cli/attributes&#45;parser.js -->
<g id="node9" class="node">
<title>src/cli/attributes&#45;parser.js</title>
<g id="a_node9"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/cli/attributes-parser.js" xlink:title="src/cli/&lt;BR/&gt;&lt;B&gt;attributes&#45;parser.js&lt;/B&gt;">
<polygon fill="#ccffcc" stroke="black" points="555.17,-98.77 457.17,-98.77 457.17,-72.77 555.17,-72.77 555.17,-98.77"/>
<text text-anchor="start" x="493.17" y="-88.57" font-family="Helvetica,sans-Serif" font-size="9.00">src/cli/</text>
<text text-anchor="start" x="465.17" y="-79.57" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">attributes&#45;parser.js</text>
</a>
</g>
</g>
<!-- src/cli/normalize.js&#45;&gt;src/cli/attributes&#45;parser.js -->
<g id="edge9" class="edge">
<title>src/cli/normalize.js&#45;&gt;src/cli/attributes&#45;parser.js</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M533.92,-106.74C533.92,-106.74 533.92,-104.96 533.92,-104.96"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="536.02,-104.96 533.92,-98.96 531.82,-104.96 536.02,-104.96"/>
</g>
<!-- src/options.js -->
<g id="node10" class="node">
<title>src/options.js</title>
<g id="a_node10"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/options.js" xlink:title="src/&lt;BR/&gt;&lt;B&gt;options.js&lt;/B&gt;">
<path fill="#ffffcc" stroke="black" d="M155.74,-191.14C155.74,-191.14 115.07,-191.14 115.07,-191.14 110.74,-191.14 106.4,-186.8 106.4,-182.47 106.4,-182.47 106.4,-173.8 106.4,-173.8 106.4,-169.47 110.74,-165.14 115.07,-165.14 115.07,-165.14 155.74,-165.14 155.74,-165.14 160.07,-165.14 164.4,-169.47 164.4,-173.8 164.4,-173.8 164.4,-182.47 164.4,-182.47 164.4,-186.8 160.07,-191.14 155.74,-191.14"/>
<text text-anchor="start" x="127.9" y="-180.94" font-family="Helvetica,sans-Serif" font-size="9.00">src/</text>
<text text-anchor="start" x="114.4" y="-171.94" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">options.js</text>
</a>
</g>
</g>
<!-- src/cli/normalize.js&#45;&gt;src/options.js -->
<g id="edge8" class="edge">
<title>src/cli/normalize.js&#45;&gt;src/options.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M512.57,-124C474.5,-124 418.17,-124 418.17,-124 418.17,-124 418.17,-171 418.17,-171 418.17,-171 170.6,-171 170.6,-171"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="170.6,-168.9 164.6,-171 170.6,-173.1 170.6,-168.9"/>
</g>
<!-- src/cli/validations.js&#45;&gt;src/index&#45;node.js -->
<g id="edge10" class="edge">
<title>src/cli/validations.js&#45;&gt;src/index&#45;node.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M399,-64.72C399,-88.89 399,-138 399,-138 399,-138 186.42,-138 186.42,-138"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="186.42,-135.9 180.42,-138 186.42,-140.1 186.42,-135.9"/>
</g>
<!-- src/cli/validations.js&#45;&gt;src/cli/attributes&#45;parser.js -->
<g id="edge11" class="edge">
<title>src/cli/validations.js&#45;&gt;src/cli/attributes&#45;parser.js</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M446.83,-64.8C446.83,-72.22 446.83,-80 446.83,-80 446.83,-80 451.17,-80 451.17,-80"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="451.17,-82.1 457.17,-80 451.17,-77.9 451.17,-82.1"/>
</g>
<!-- src/index&#45;node.js&#45;&gt;package.json -->
<g id="edge12" class="edge">
<title>src/index&#45;node.js&#45;&gt;package.json</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M164.23,-128.21C164.23,-128.21 164.23,-126.25 164.23,-126.25"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="166.33,-126.25 164.23,-120.25 162.13,-126.25 166.33,-126.25"/>
</g>
<!-- src/index&#45;node.js&#45;&gt;src/options.js -->
<g id="edge13" class="edge">
<title>src/index&#45;node.js&#45;&gt;src/options.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M135.4,-154.65C135.4,-154.65 135.4,-158.76 135.4,-158.76"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="133.3,-158.76 135.4,-164.76 137.5,-158.76 133.3,-158.76"/>
</g>
<!-- src/parse/index.js -->
<g id="node11" class="node">
<title>src/parse/index.js</title>
<g id="a_node11"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/parse/index.js" xlink:title="src/parse/&lt;BR/&gt;&lt;B&gt;index.js&lt;/B&gt;">
<path fill="#ffccff" stroke="black" d="M207.14,-279.86C207.14,-279.86 168.47,-279.86 168.47,-279.86 164.14,-279.86 159.81,-275.53 159.81,-271.19 159.81,-271.19 159.81,-262.53 159.81,-262.53 159.81,-258.19 164.14,-253.86 168.47,-253.86 168.47,-253.86 207.14,-253.86 207.14,-253.86 211.47,-253.86 215.81,-258.19 215.81,-262.53 215.81,-262.53 215.81,-271.19 215.81,-271.19 215.81,-275.53 211.47,-279.86 207.14,-279.86"/>
<text text-anchor="start" x="167.81" y="-269.66" font-family="Helvetica,sans-Serif" font-size="9.00">src/parse/</text>
<text text-anchor="start" x="170.81" y="-260.66" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">index.js</text>
</a>
</g>
</g>
<!-- src/index&#45;node.js&#45;&gt;src/parse/index.js -->
<g id="edge14" class="edge">
<title>src/index&#45;node.js&#45;&gt;src/parse/index.js</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M176.97,-154.8C176.97,-154.8 176.97,-247.53 176.97,-247.53"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="174.87,-247.53 176.97,-253.53 179.07,-247.53 174.87,-247.53"/>
</g>
<!-- src/render/index&#45;node.js -->
<g id="node12" class="node">
<title>src/render/index&#45;node.js</title>
<g id="a_node12"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/index-node.js" xlink:title="src/render/&lt;BR/&gt;&lt;B&gt;index&#45;node.js&lt;/B&gt;">
<path fill="#ccccff" stroke="black" d="M197.16,-416.71C197.16,-416.71 140.49,-416.71 140.49,-416.71 136.16,-416.71 131.82,-412.38 131.82,-408.04 131.82,-408.04 131.82,-399.38 131.82,-399.38 131.82,-395.04 136.16,-390.71 140.49,-390.71 140.49,-390.71 197.16,-390.71 197.16,-390.71 201.49,-390.71 205.82,-395.04 205.82,-399.38 205.82,-399.38 205.82,-408.04 205.82,-408.04 205.82,-412.38 201.49,-416.71 197.16,-416.71"/>
<text text-anchor="start" x="146.82" y="-406.51" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/</text>
<text text-anchor="start" x="139.82" y="-397.51" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">index&#45;node.js</text>
</a>
</g>
</g>
<!-- src/index&#45;node.js&#45;&gt;src/render/index&#45;node.js -->
<g id="edge15" class="edge">
<title>src/index&#45;node.js&#45;&gt;src/render/index&#45;node.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M180.5,-150C228.46,-150 305.68,-150 305.68,-150 305.68,-150 305.68,-398 305.68,-398 305.68,-398 211.86,-398 211.86,-398"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="211.86,-395.9 205.86,-398 211.86,-400.1 211.86,-395.9"/>
</g>
<!-- src/transform/desugar.js -->
<g id="node13" class="node">
<title>src/transform/desugar.js</title>
<g id="a_node13"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/transform/desugar.js" xlink:title="src/transform/&lt;BR/&gt;&lt;B&gt;desugar.js&lt;/B&gt;">
<path fill="#ffffcc" stroke="black" d="M559.36,-392.67C559.36,-392.67 505.7,-392.67 505.7,-392.67 501.36,-392.67 497.03,-388.34 497.03,-384.01 497.03,-384.01 497.03,-375.34 497.03,-375.34 497.03,-371.01 501.36,-366.67 505.7,-366.67 505.7,-366.67 559.36,-366.67 559.36,-366.67 563.7,-366.67 568.03,-371.01 568.03,-375.34 568.03,-375.34 568.03,-384.01 568.03,-384.01 568.03,-388.34 563.7,-392.67 559.36,-392.67"/>
<text text-anchor="start" x="505.03" y="-382.47" font-family="Helvetica,sans-Serif" font-size="9.00">src/transform/</text>
<text text-anchor="start" x="510.03" y="-373.47" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">desugar.js</text>
</a>
</g>
</g>
<!-- src/index&#45;node.js&#45;&gt;src/transform/desugar.js -->
<g id="edge16" class="edge">
<title>src/index&#45;node.js&#45;&gt;src/transform/desugar.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M180.46,-145C228.88,-145 307.32,-145 307.32,-145 307.32,-145 307.32,-379 307.32,-379 307.32,-379 490.85,-379 490.85,-379"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="490.85,-381.1 496.85,-379 490.85,-376.9 490.85,-381.1"/>
</g>
<!-- src/parse/index.js&#45;&gt;src/options.js -->
<g id="edge22" class="edge">
<title>src/parse/index.js&#45;&gt;src/options.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M173.7,-253.82C173.7,-229.8 173.7,-181 173.7,-181 173.7,-181 170.43,-181 170.43,-181"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="170.43,-178.9 164.43,-181 170.43,-183.1 170.43,-178.9"/>
</g>
<!-- src/parse/scxml/index.js -->
<g id="node16" class="node">
<title>src/parse/scxml/index.js</title>
<g id="a_node16"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/parse/scxml/index.js" xlink:title="src/parse/scxml/&lt;BR/&gt;&lt;B&gt;index.js&lt;/B&gt;">
<path fill="#ffccff" stroke="black" d="M537.48,-259.57C537.48,-259.57 472.81,-259.57 472.81,-259.57 468.48,-259.57 464.14,-255.23 464.14,-250.9 464.14,-250.9 464.14,-242.23 464.14,-242.23 464.14,-237.9 468.48,-233.57 472.81,-233.57 472.81,-233.57 537.48,-233.57 537.48,-233.57 541.81,-233.57 546.14,-237.9 546.14,-242.23 546.14,-242.23 546.14,-250.9 546.14,-250.9 546.14,-255.23 541.81,-259.57 537.48,-259.57"/>
<text text-anchor="start" x="472.14" y="-249.37" font-family="Helvetica,sans-Serif" font-size="9.00">src/parse/scxml/</text>
<text text-anchor="start" x="488.14" y="-240.37" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">index.js</text>
</a>
</g>
</g>
<!-- src/parse/index.js&#45;&gt;src/parse/scxml/index.js -->
<g id="edge23" class="edge">
<title>src/parse/index.js&#45;&gt;src/parse/scxml/index.js</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M216,-273C287.65,-273 471.07,-273 471.07,-273 471.07,-273 471.07,-265.78 471.07,-265.78"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="473.17,-265.78 471.07,-259.78 468.97,-265.78 473.17,-265.78"/>
</g>
<!-- src/parse/smcat&#45;ast.schema.json -->
<g id="node17" class="node">
<title>src/parse/smcat&#45;ast.schema.json</title>
<g id="a_node17"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/parse/smcat-ast.schema.json" xlink:title="src/parse/&lt;BR/&gt;&lt;B&gt;smcat&#45;ast.schema.json&lt;/B&gt;">
<path fill="#ffccff" stroke="black" d="M135,-291.37C135,-293.15 108.78,-294.6 76.5,-294.6 44.22,-294.6 18,-293.15 18,-291.37 18,-291.37 18,-262.33 18,-262.33 18,-260.55 44.22,-259.1 76.5,-259.1 108.78,-259.1 135,-260.55 135,-262.33 135,-262.33 135,-291.37 135,-291.37"/>
<path fill="none" stroke="black" d="M135,-291.37C135,-289.59 108.78,-288.15 76.5,-288.15 44.22,-288.15 18,-289.59 18,-291.37"/>
<text text-anchor="start" x="56.5" y="-279.65" font-family="Helvetica,sans-Serif" font-size="9.00">src/parse/</text>
<text text-anchor="start" x="26" y="-270.65" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">smcat&#45;ast.schema.json</text>
</a>
</g>
</g>
<!-- src/parse/index.js&#45;&gt;src/parse/smcat&#45;ast.schema.json -->
<g id="edge24" class="edge">
<title>src/parse/index.js&#45;&gt;src/parse/smcat&#45;ast.schema.json</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M159.72,-269C159.72,-269 141.43,-269 141.43,-269"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="141.43,-266.9 135.43,-269 141.43,-271.1 141.43,-266.9"/>
</g>
<!-- src/parse/smcat/smcat&#45;parser.js -->
<g id="node18" class="node">
<title>src/parse/smcat/smcat&#45;parser.js</title>
<g id="a_node18"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/parse/smcat/smcat-parser.js" xlink:title="src/parse/smcat/&lt;BR/&gt;&lt;B&gt;smcat&#45;parser.js&lt;/B&gt;">
<polygon fill="#ffccff" stroke="black" points="595.72,-167.57 511.72,-167.57 511.72,-141.57 595.72,-141.57 595.72,-167.57"/>
<text text-anchor="start" x="520.22" y="-157.37" font-family="Helvetica,sans-Serif" font-size="9.00">src/parse/smcat/</text>
<text text-anchor="start" x="519.72" y="-148.37" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">smcat&#45;parser.js</text>
</a>
</g>
</g>
<!-- src/parse/index.js&#45;&gt;src/parse/smcat/smcat&#45;parser.js -->
<g id="edge25" class="edge">
<title>src/parse/index.js&#45;&gt;src/parse/smcat/smcat&#45;parser.js</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M203.95,-253.63C203.95,-224.83 203.95,-159 203.95,-159 203.95,-159 505.53,-159 505.53,-159"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="505.53,-161.1 511.53,-159 505.53,-156.9 505.53,-161.1"/>
</g>
<!-- src/render/dot/index.js -->
<g id="node27" class="node">
<title>src/render/dot/index.js</title>
<g id="a_node27"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/dot/index.js" xlink:title="src/render/dot/&lt;BR/&gt;&lt;B&gt;index.js&lt;/B&gt;">
<path fill="#ccccff" stroke="black" d="M338.98,-712.68C338.98,-712.68 281.31,-712.68 281.31,-712.68 276.98,-712.68 272.65,-708.35 272.65,-704.01 272.65,-704.01 272.65,-695.35 272.65,-695.35 272.65,-691.01 276.98,-686.68 281.31,-686.68 281.31,-686.68 338.98,-686.68 338.98,-686.68 343.31,-686.68 347.65,-691.01 347.65,-695.35 347.65,-695.35 347.65,-704.01 347.65,-704.01 347.65,-708.35 343.31,-712.68 338.98,-712.68"/>
<text text-anchor="start" x="280.65" y="-702.48" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/dot/</text>
<text text-anchor="start" x="293.15" y="-693.48" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">index.js</text>
</a>
</g>
</g>
<!-- src/render/index&#45;node.js&#45;&gt;src/render/dot/index.js -->
<g id="edge42" class="edge">
<title>src/render/index&#45;node.js&#45;&gt;src/render/dot/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M171.77,-416.99C171.77,-438.36 171.77,-478 171.77,-478 171.77,-478 290.96,-478 290.96,-478 290.96,-478 290.96,-680.48 290.96,-680.48"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="288.86,-680.48 290.96,-686.48 293.06,-680.48 288.86,-680.48"/>
</g>
<!-- src/render/scjson/index.js -->
<g id="node31" class="node">
<title>src/render/scjson/index.js</title>
<g id="a_node31"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/scjson/index.js" xlink:title="src/render/scjson/&lt;BR/&gt;&lt;B&gt;index.js&lt;/B&gt;">
<path fill="#ccccff" stroke="black" d="M521.17,-426.77C521.17,-426.77 449.5,-426.77 449.5,-426.77 445.17,-426.77 440.83,-422.44 440.83,-418.1 440.83,-418.1 440.83,-409.44 440.83,-409.44 440.83,-405.1 445.17,-400.77 449.5,-400.77 449.5,-400.77 521.17,-400.77 521.17,-400.77 525.5,-400.77 529.83,-405.1 529.83,-409.44 529.83,-409.44 529.83,-418.1 529.83,-418.1 529.83,-422.44 525.5,-426.77 521.17,-426.77"/>
<text text-anchor="start" x="448.83" y="-416.57" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/scjson/</text>
<text text-anchor="start" x="468.33" y="-407.57" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">index.js</text>
</a>
</g>
</g>
<!-- src/render/index&#45;node.js&#45;&gt;src/render/scjson/index.js -->
<g id="edge43" class="edge">
<title>src/render/index&#45;node.js&#45;&gt;src/render/scjson/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M206.06,-406C206.06,-406 434.61,-406 434.61,-406"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="434.61,-408.1 440.61,-406 434.61,-403.9 434.61,-408.1"/>
</g>
<!-- src/render/scxml/index.js -->
<g id="node32" class="node">
<title>src/render/scxml/index.js</title>
<g id="a_node32"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/scxml/index.js" xlink:title="src/render/scxml/&lt;BR/&gt;&lt;B&gt;index.js&lt;/B&gt;">
<path fill="#ccccff" stroke="black" d="M428.67,-461.26C428.67,-461.26 360,-461.26 360,-461.26 355.67,-461.26 351.34,-456.93 351.34,-452.6 351.34,-452.6 351.34,-443.93 351.34,-443.93 351.34,-439.6 355.67,-435.26 360,-435.26 360,-435.26 428.67,-435.26 428.67,-435.26 433,-435.26 437.34,-439.6 437.34,-443.93 437.34,-443.93 437.34,-452.6 437.34,-452.6 437.34,-456.93 433,-461.26 428.67,-461.26"/>
<text text-anchor="start" x="359.34" y="-451.06" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/scxml/</text>
<text text-anchor="start" x="377.34" y="-442.06" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">index.js</text>
</a>
</g>
</g>
<!-- src/render/index&#45;node.js&#45;&gt;src/render/scxml/index.js -->
<g id="edge44" class="edge">
<title>src/render/index&#45;node.js&#45;&gt;src/render/scxml/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M206.23,-411C261.4,-411 358.15,-411 358.15,-411 358.15,-411 358.15,-429.23 358.15,-429.23"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="356.05,-429.23 358.15,-435.23 360.25,-429.23 356.05,-429.23"/>
</g>
<!-- src/render/smcat/index.js -->
<g id="node33" class="node">
<title>src/render/smcat/index.js</title>
<g id="a_node33"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/smcat/index.js" xlink:title="src/render/smcat/&lt;BR/&gt;&lt;B&gt;index.js&lt;/B&gt;">
<path fill="#ccccff" stroke="black" d="M266.59,-450.71C266.59,-450.71 197.93,-450.71 197.93,-450.71 193.59,-450.71 189.26,-446.38 189.26,-442.05 189.26,-442.05 189.26,-433.38 189.26,-433.38 189.26,-429.05 193.59,-424.71 197.93,-424.71 197.93,-424.71 266.59,-424.71 266.59,-424.71 270.93,-424.71 275.26,-429.05 275.26,-433.38 275.26,-433.38 275.26,-442.05 275.26,-442.05 275.26,-446.38 270.93,-450.71 266.59,-450.71"/>
<text text-anchor="start" x="197.26" y="-440.51" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/smcat/</text>
<text text-anchor="start" x="215.26" y="-431.51" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">index.js</text>
</a>
</g>
</g>
<!-- src/render/index&#45;node.js&#45;&gt;src/render/smcat/index.js -->
<g id="edge45" class="edge">
<title>src/render/index&#45;node.js&#45;&gt;src/render/smcat/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M197.54,-416.76C197.54,-416.76 197.54,-418.53 197.54,-418.53"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="195.44,-418.53 197.54,-424.53 199.64,-418.53 195.44,-418.53"/>
</g>
<!-- src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.js -->
<g id="node34" class="node">
<title>src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.js</title>
<g id="a_node34"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/vector/vector-native-dot-with-fallback.js" xlink:title="src/render/vector/&lt;BR/&gt;&lt;B&gt;vector&#45;native&#45;dot&#45;with&#45;fallback.js&lt;/B&gt;">
<path fill="#ccccff" stroke="black" d="M291.51,-314.67C291.51,-314.67 151.84,-314.67 151.84,-314.67 147.51,-314.67 143.18,-310.33 143.18,-306 143.18,-306 143.18,-297.33 143.18,-297.33 143.18,-293 147.51,-288.67 151.84,-288.67 151.84,-288.67 291.51,-288.67 291.51,-288.67 295.84,-288.67 300.18,-293 300.18,-297.33 300.18,-297.33 300.18,-306 300.18,-306 300.18,-310.33 295.84,-314.67 291.51,-314.67"/>
<text text-anchor="start" x="186.18" y="-304.47" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/vector/</text>
<text text-anchor="start" x="151.18" y="-295.47" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">vector&#45;native&#45;dot&#45;with&#45;fallback.js</text>
</a>
</g>
</g>
<!-- src/render/index&#45;node.js&#45;&gt;src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.js -->
<g id="edge46" class="edge">
<title>src/render/index&#45;node.js&#45;&gt;src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M205.87,-395C230.15,-395 257.4,-395 257.4,-395 257.4,-395 257.4,-321.04 257.4,-321.04"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="259.5,-321.04 257.4,-315.04 255.3,-321.04 259.5,-321.04"/>
</g>
<!-- src/render/vector/vector&#45;with&#45;viz&#45;js.js -->
<g id="node35" class="node">
<title>src/render/vector/vector&#45;with&#45;viz&#45;js.js</title>
<g id="a_node35"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/vector/vector-with-viz-js.js" xlink:title="src/render/vector/&lt;BR/&gt;&lt;B&gt;vector&#45;with&#45;viz&#45;js.js&lt;/B&gt;">
<path fill="#ccccff" stroke="black" d="M230.87,-382.69C230.87,-382.69 148.21,-382.69 148.21,-382.69 143.87,-382.69 139.54,-378.36 139.54,-374.02 139.54,-374.02 139.54,-365.36 139.54,-365.36 139.54,-361.02 143.87,-356.69 148.21,-356.69 148.21,-356.69 230.87,-356.69 230.87,-356.69 235.21,-356.69 239.54,-361.02 239.54,-365.36 239.54,-365.36 239.54,-374.02 239.54,-374.02 239.54,-378.36 235.21,-382.69 230.87,-382.69"/>
<text text-anchor="start" x="154.04" y="-372.49" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/vector/</text>
<text text-anchor="start" x="147.54" y="-363.49" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">vector&#45;with&#45;viz&#45;js.js</text>
</a>
</g>
</g>
<!-- src/render/index&#45;node.js&#45;&gt;src/render/vector/vector&#45;with&#45;viz&#45;js.js -->
<g id="edge47" class="edge">
<title>src/render/index&#45;node.js&#45;&gt;src/render/vector/vector&#45;with&#45;viz&#45;js.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M172.68,-390.65C172.68,-390.65 172.68,-388.88 172.68,-388.88"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="174.78,-388.88 172.68,-382.88 170.58,-388.88 174.78,-388.88"/>
</g>
<!-- src/state&#45;machine&#45;model.js -->
<g id="node20" class="node">
<title>src/state&#45;machine&#45;model.js</title>
<g id="a_node20"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/state-machine-model.js" xlink:title="src/&lt;BR/&gt;&lt;B&gt;state&#45;machine&#45;model.js&lt;/B&gt;">
<path fill="#ffffcc" stroke="black" d="M593.25,-355.3C593.25,-355.3 493.59,-355.3 493.59,-355.3 489.25,-355.3 484.92,-350.96 484.92,-346.63 484.92,-346.63 484.92,-337.96 484.92,-337.96 484.92,-333.63 489.25,-329.3 493.59,-329.3 493.59,-329.3 593.25,-329.3 593.25,-329.3 597.59,-329.3 601.92,-333.63 601.92,-337.96 601.92,-337.96 601.92,-346.63 601.92,-346.63 601.92,-350.96 597.59,-355.3 593.25,-355.3"/>
<text text-anchor="start" x="535.92" y="-345.1" font-family="Helvetica,sans-Serif" font-size="9.00">src/</text>
<text text-anchor="start" x="492.92" y="-336.1" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">state&#45;machine&#45;model.js</text>
</a>
</g>
</g>
<!-- src/transform/desugar.js&#45;&gt;src/state&#45;machine&#45;model.js -->
<g id="edge65" class="edge">
<title>src/transform/desugar.js&#45;&gt;src/state&#45;machine&#45;model.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M532.53,-366.6C532.53,-366.6 532.53,-361.42 532.53,-361.42"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="534.63,-361.42 532.53,-355.42 530.43,-361.42 534.63,-361.42"/>
</g>
<!-- src/transform/utl.js -->
<g id="node21" class="node">
<title>src/transform/utl.js</title>
<g id="a_node21"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/transform/utl.js" xlink:title="src/transform/&lt;BR/&gt;&lt;B&gt;utl.js&lt;/B&gt;">
<path fill="#ffffcc" stroke="black" d="M568.78,-309.54C568.78,-309.54 515.12,-309.54 515.12,-309.54 510.78,-309.54 506.45,-305.21 506.45,-300.88 506.45,-300.88 506.45,-292.21 506.45,-292.21 506.45,-287.88 510.78,-283.54 515.12,-283.54 515.12,-283.54 568.78,-283.54 568.78,-283.54 573.12,-283.54 577.45,-287.88 577.45,-292.21 577.45,-292.21 577.45,-300.88 577.45,-300.88 577.45,-305.21 573.12,-309.54 568.78,-309.54"/>
<text text-anchor="start" x="514.45" y="-299.34" font-family="Helvetica,sans-Serif" font-size="9.00">src/transform/</text>
<text text-anchor="start" x="531.45" y="-290.34" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">utl.js</text>
</a>
</g>
</g>
<!-- src/transform/desugar.js&#45;&gt;src/transform/utl.js -->
<g id="edge66" class="edge">
<title>src/transform/desugar.js&#45;&gt;src/transform/utl.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M496.76,-369C486.48,-369 477.99,-369 477.99,-369 477.99,-369 477.99,-299 477.99,-299 477.99,-299 500.23,-299 500.23,-299"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="500.23,-301.1 506.23,-299 500.23,-296.9 500.23,-301.1"/>
</g>
<!-- src/index.js -->
<g id="node14" class="node">
<title>src/index.js</title>
<g id="a_node14"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/index.js" xlink:title="src/&lt;BR/&gt;&lt;B&gt;index.js&lt;/B&gt;">
<path fill="#ffffcc" stroke="black" d="M161.77,-234.53C161.77,-234.53 125.11,-234.53 125.11,-234.53 120.77,-234.53 116.44,-230.2 116.44,-225.87 116.44,-225.87 116.44,-217.2 116.44,-217.2 116.44,-212.87 120.77,-208.53 125.11,-208.53 125.11,-208.53 161.77,-208.53 161.77,-208.53 166.11,-208.53 170.44,-212.87 170.44,-217.2 170.44,-217.2 170.44,-225.87 170.44,-225.87 170.44,-230.2 166.11,-234.53 161.77,-234.53"/>
<text text-anchor="start" x="135.94" y="-224.33" font-family="Helvetica,sans-Serif" font-size="9.00">src/</text>
<text text-anchor="start" x="126.44" y="-215.33" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">index.js</text>
</a>
</g>
</g>
<!-- src/index.js&#45;&gt;package.json -->
<g id="edge17" class="edge">
<title>src/index.js&#45;&gt;package.json</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M170.61,-216C181.75,-216 192.09,-216 192.09,-216 192.09,-216 192.09,-126.47 192.09,-126.47"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="194.19,-126.47 192.09,-120.47 189.99,-126.47 194.19,-126.47"/>
</g>
<!-- src/index.js&#45;&gt;src/options.js -->
<g id="edge18" class="edge">
<title>src/index.js&#45;&gt;src/options.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M140.42,-208.28C140.42,-208.28 140.42,-197.31 140.42,-197.31"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="142.52,-197.31 140.42,-191.31 138.32,-197.31 142.52,-197.31"/>
</g>
<!-- src/index.js&#45;&gt;src/parse/index.js -->
<g id="edge19" class="edge">
<title>src/index.js&#45;&gt;src/parse/index.js</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M165.12,-234.89C165.12,-234.89 165.12,-247.76 165.12,-247.76"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="163.02,-247.76 165.12,-253.76 167.22,-247.76 163.02,-247.76"/>
</g>
<!-- src/index.js&#45;&gt;src/transform/desugar.js -->
<g id="edge21" class="edge">
<title>src/index.js&#45;&gt;src/transform/desugar.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M170.74,-222C218.77,-222 313.36,-222 313.36,-222 313.36,-222 313.36,-376 313.36,-376 313.36,-376 490.83,-376 490.83,-376"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="490.83,-378.1 496.83,-376 490.83,-373.9 490.83,-378.1"/>
</g>
<!-- src/render/index.js -->
<g id="node15" class="node">
<title>src/render/index.js</title>
<g id="a_node15"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/index.js" xlink:title="src/render/&lt;BR/&gt;&lt;B&gt;index.js&lt;/B&gt;">
<path fill="#ccccff" stroke="black" d="M334.61,-467.38C334.61,-467.38 291.95,-467.38 291.95,-467.38 287.61,-467.38 283.28,-463.04 283.28,-458.71 283.28,-458.71 283.28,-450.04 283.28,-450.04 283.28,-445.71 287.61,-441.38 291.95,-441.38 291.95,-441.38 334.61,-441.38 334.61,-441.38 338.95,-441.38 343.28,-445.71 343.28,-450.04 343.28,-450.04 343.28,-458.71 343.28,-458.71 343.28,-463.04 338.95,-467.38 334.61,-467.38"/>
<text text-anchor="start" x="291.28" y="-457.18" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/</text>
<text text-anchor="start" x="296.28" y="-448.18" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">index.js</text>
</a>
</g>
</g>
<!-- src/index.js&#45;&gt;src/render/index.js -->
<g id="edge20" class="edge">
<title>src/index.js&#45;&gt;src/render/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M170.77,-227C216.22,-227 302.4,-227 302.4,-227 302.4,-227 302.4,-435.17 302.4,-435.17"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="300.3,-435.17 302.4,-441.17 304.5,-435.17 300.3,-435.17"/>
</g>
<!-- src/render/index.js&#45;&gt;src/render/dot/index.js -->
<g id="edge48" class="edge">
<title>src/render/index.js&#45;&gt;src/render/dot/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M293.84,-467.56C293.84,-467.56 293.84,-680.43 293.84,-680.43"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="291.74,-680.43 293.84,-686.43 295.94,-680.43 291.74,-680.43"/>
</g>
<!-- src/render/index.js&#45;&gt;src/render/scjson/index.js -->
<g id="edge49" class="edge">
<title>src/render/index.js&#45;&gt;src/render/scjson/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M326.27,-441.18C326.27,-431.49 326.27,-420 326.27,-420 326.27,-420 434.6,-420 434.6,-420"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="434.6,-422.1 440.6,-420 434.6,-417.9 434.6,-422.1"/>
</g>
<!-- src/render/index.js&#45;&gt;src/render/scxml/index.js -->
<g id="edge50" class="edge">
<title>src/render/index.js&#45;&gt;src/render/scxml/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M343.46,-451C343.46,-451 345.15,-451 345.15,-451"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="345.15,-453.1 351.15,-451 345.15,-448.9 345.15,-453.1"/>
</g>
<!-- src/render/index.js&#45;&gt;src/render/smcat/index.js -->
<g id="edge51" class="edge">
<title>src/render/index.js&#45;&gt;src/render/smcat/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M283.11,-446C283.11,-446 281.42,-446 281.42,-446"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="281.42,-443.9 275.42,-446 281.42,-448.1 281.42,-443.9"/>
</g>
<!-- src/render/index.js&#45;&gt;src/render/vector/vector&#45;with&#45;viz&#45;js.js -->
<g id="edge52" class="edge">
<title>src/render/index.js&#45;&gt;src/render/vector/vector&#45;with&#45;viz&#45;js.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M291.73,-441.3C291.73,-418.3 291.73,-373 291.73,-373 291.73,-373 245.74,-373 245.74,-373"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="245.74,-370.9 239.74,-373 245.74,-375.1 245.74,-370.9"/>
</g>
<!-- src/parse/parser&#45;helpers.js -->
<g id="node19" class="node">
<title>src/parse/parser&#45;helpers.js</title>
<g id="a_node19"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/parse/parser-helpers.js" xlink:title="src/parse/&lt;BR/&gt;&lt;B&gt;parser&#45;helpers.js&lt;/B&gt;">
<path fill="#ffccff" stroke="black" d="M584.45,-211.01C584.45,-211.01 511.79,-211.01 511.79,-211.01 507.45,-211.01 503.12,-206.67 503.12,-202.34 503.12,-202.34 503.12,-193.67 503.12,-193.67 503.12,-189.34 507.45,-185.01 511.79,-185.01 511.79,-185.01 584.45,-185.01 584.45,-185.01 588.79,-185.01 593.12,-189.34 593.12,-193.67 593.12,-193.67 593.12,-202.34 593.12,-202.34 593.12,-206.67 588.79,-211.01 584.45,-211.01"/>
<text text-anchor="start" x="528.12" y="-200.81" font-family="Helvetica,sans-Serif" font-size="9.00">src/parse/</text>
<text text-anchor="start" x="511.12" y="-191.81" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">parser&#45;helpers.js</text>
</a>
</g>
</g>
<!-- src/parse/scxml/index.js&#45;&gt;src/parse/parser&#45;helpers.js -->
<g id="edge28" class="edge">
<title>src/parse/scxml/index.js&#45;&gt;src/parse/parser&#45;helpers.js</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M524.63,-233.55C524.63,-233.55 524.63,-217.06 524.63,-217.06"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="526.73,-217.06 524.63,-211.06 522.53,-217.06 526.73,-217.06"/>
</g>
<!-- src/parse/scxml/index.js&#45;&gt;src/transform/utl.js -->
<g id="edge27" class="edge">
<title>src/parse/scxml/index.js&#45;&gt;src/transform/utl.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M526.3,-259.7C526.3,-259.7 526.3,-277.33 526.3,-277.33"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="524.2,-277.33 526.3,-283.33 528.4,-277.33 524.2,-277.33"/>
</g>
<!-- src/parse/scxml/normalize&#45;machine.js -->
<g id="node22" class="node">
<title>src/parse/scxml/normalize&#45;machine.js</title>
<g id="a_node22"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/parse/scxml/normalize-machine.js" xlink:title="src/parse/scxml/&lt;BR/&gt;&lt;B&gt;normalize&#45;machine.js&lt;/B&gt;">
<path fill="#ffccff" stroke="black" d="M653.56,-259.57C653.56,-259.57 562.9,-259.57 562.9,-259.57 558.56,-259.57 554.23,-255.24 554.23,-250.91 554.23,-250.91 554.23,-242.24 554.23,-242.24 554.23,-237.91 558.56,-233.57 562.9,-233.57 562.9,-233.57 653.56,-233.57 653.56,-233.57 657.9,-233.57 662.23,-237.91 662.23,-242.24 662.23,-242.24 662.23,-250.91 662.23,-250.91 662.23,-255.24 657.9,-259.57 653.56,-259.57"/>
<text text-anchor="start" x="575.23" y="-249.37" font-family="Helvetica,sans-Serif" font-size="9.00">src/parse/scxml/</text>
<text text-anchor="start" x="562.23" y="-240.37" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">normalize&#45;machine.js</text>
</a>
</g>
</g>
<!-- src/parse/scxml/index.js&#45;&gt;src/parse/scxml/normalize&#45;machine.js -->
<g id="edge29" class="edge">
<title>src/parse/scxml/index.js&#45;&gt;src/parse/scxml/normalize&#45;machine.js</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M546.18,-246C546.18,-246 548.01,-246 548.01,-246"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="548.01,-248.1 554.01,-246 548.01,-243.9 548.01,-248.1"/>
</g>
<!-- src/parse/smcat/smcat&#45;parser.js&#45;&gt;src/parse/parser&#45;helpers.js -->
<g id="edge30" class="edge">
<title>src/parse/smcat/smcat&#45;parser.js&#45;&gt;src/parse/parser&#45;helpers.js</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M552.42,-167.84C552.42,-167.84 552.42,-178.82 552.42,-178.82"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="550.32,-178.82 552.42,-184.82 554.52,-178.82 550.32,-178.82"/>
</g>
<!-- src/parse/parser&#45;helpers.js&#45;&gt;src/state&#45;machine&#45;model.js -->
<g id="edge26" class="edge">
<title>src/parse/parser&#45;helpers.js&#45;&gt;src/state&#45;machine&#45;model.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M550.19,-211.12C550.19,-230.87 550.19,-266 550.19,-266 550.19,-266 589.69,-266 589.69,-266 589.69,-266 589.69,-323.01 589.69,-323.01"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="587.59,-323.01 589.69,-329.01 591.79,-323.01 587.59,-323.01"/>
</g>
<!-- src/render/dot/attributebuilder.js -->
<g id="node23" class="node">
<title>src/render/dot/attributebuilder.js</title>
<g id="a_node23"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/dot/attributebuilder.js" xlink:title="src/render/dot/&lt;BR/&gt;&lt;B&gt;attributebuilder.js&lt;/B&gt;">
<path fill="#ccccff" stroke="black" d="M218.19,-701.7C218.19,-701.7 144.53,-701.7 144.53,-701.7 140.19,-701.7 135.86,-697.37 135.86,-693.03 135.86,-693.03 135.86,-684.37 135.86,-684.37 135.86,-680.03 140.19,-675.7 144.53,-675.7 144.53,-675.7 218.19,-675.7 218.19,-675.7 222.53,-675.7 226.86,-680.03 226.86,-684.37 226.86,-684.37 226.86,-693.03 226.86,-693.03 226.86,-697.37 222.53,-701.7 218.19,-701.7"/>
<text text-anchor="start" x="151.86" y="-691.5" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/dot/</text>
<text text-anchor="start" x="143.86" y="-682.5" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">attributebuilder.js</text>
</a>
</g>
</g>
<!-- src/render/dot/counter.js -->
<g id="node24" class="node">
<title>src/render/dot/counter.js</title>
<g id="a_node24"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/dot/counter.js" xlink:title="src/render/dot/&lt;BR/&gt;&lt;B&gt;counter.js&lt;/B&gt;">
<path fill="#ccccff" stroke="black" d="M276.54,-667.61C276.54,-667.61 218.87,-667.61 218.87,-667.61 214.54,-667.61 210.2,-663.27 210.2,-658.94 210.2,-658.94 210.2,-650.27 210.2,-650.27 210.2,-645.94 214.54,-641.61 218.87,-641.61 218.87,-641.61 276.54,-641.61 276.54,-641.61 280.87,-641.61 285.2,-645.94 285.2,-650.27 285.2,-650.27 285.2,-658.94 285.2,-658.94 285.2,-663.27 280.87,-667.61 276.54,-667.61"/>
<text text-anchor="start" x="218.2" y="-657.41" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/dot/</text>
<text text-anchor="start" x="226.2" y="-648.41" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">counter.js</text>
</a>
</g>
</g>
<!-- src/render/dot/dot.states.template.js -->
<g id="node25" class="node">
<title>src/render/dot/dot.states.template.js</title>
<g id="a_node25"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/dot/dot.states.template.js" xlink:title="src/render/dot/&lt;BR/&gt;&lt;B&gt;dot.states.template.js&lt;/B&gt;">
<polygon fill="#ccccff" stroke="black" points="408.59,-678.66 299.59,-678.66 299.59,-652.66 408.59,-652.66 408.59,-678.66"/>
<text text-anchor="start" x="324.59" y="-668.46" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/dot/</text>
<text text-anchor="start" x="307.59" y="-659.46" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">dot.states.template.js</text>
</a>
</g>
</g>
<!-- src/render/dot/dot.template.js -->
<g id="node26" class="node">
<title>src/render/dot/dot.template.js</title>
<g id="a_node26"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/dot/dot.template.js" xlink:title="src/render/dot/&lt;BR/&gt;&lt;B&gt;dot.template.js&lt;/B&gt;">
<polygon fill="#ccccff" stroke="black" points="436.51,-713.78 356.51,-713.78 356.51,-687.78 436.51,-687.78 436.51,-713.78"/>
<text text-anchor="start" x="367.01" y="-703.58" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/dot/</text>
<text text-anchor="start" x="364.51" y="-694.58" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">dot.template.js</text>
</a>
</g>
</g>
<!-- src/render/dot/index.js&#45;&gt;src/options.js -->
<g id="edge31" class="edge">
<title>src/render/dot/index.js&#45;&gt;src/options.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M272.43,-709C189.77,-709 0,-709 0,-709 0,-709 0,-178 0,-178 0,-178 100.35,-178 100.35,-178"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="100.35,-180.1 106.35,-178 100.35,-175.9 100.35,-180.1"/>
</g>
<!-- src/render/dot/index.js&#45;&gt;src/state&#45;machine&#45;model.js -->
<g id="edge32" class="edge">
<title>src/render/dot/index.js&#45;&gt;src/state&#45;machine&#45;model.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M296.71,-686.5C296.71,-640.38 296.71,-489 296.71,-489 296.71,-489 583.07,-489 583.07,-489 583.07,-489 583.07,-361.31 583.07,-361.31"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="585.17,-361.31 583.07,-355.31 580.97,-361.31 585.17,-361.31"/>
</g>
<!-- src/render/dot/index.js&#45;&gt;src/render/dot/attributebuilder.js -->
<g id="edge33" class="edge">
<title>src/render/dot/index.js&#45;&gt;src/render/dot/attributebuilder.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M272.55,-694C272.55,-694 232.99,-694 232.99,-694"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="232.99,-691.9 226.99,-694 232.99,-696.1 232.99,-691.9"/>
</g>
<!-- src/render/dot/index.js&#45;&gt;src/render/dot/counter.js -->
<g id="edge34" class="edge">
<title>src/render/dot/index.js&#45;&gt;src/render/dot/counter.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M278.93,-686.4C278.93,-686.4 278.93,-673.64 278.93,-673.64"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="281.03,-673.64 278.93,-667.64 276.83,-673.64 281.03,-673.64"/>
</g>
<!-- src/render/dot/index.js&#45;&gt;src/render/dot/dot.states.template.js -->
<g id="edge35" class="edge">
<title>src/render/dot/index.js&#45;&gt;src/render/dot/dot.states.template.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M323.62,-686.62C323.62,-686.62 323.62,-684.85 323.62,-684.85"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="325.72,-684.85 323.62,-678.85 321.52,-684.85 325.72,-684.85"/>
</g>
<!-- src/render/dot/index.js&#45;&gt;src/render/dot/dot.template.js -->
<g id="edge36" class="edge">
<title>src/render/dot/index.js&#45;&gt;src/render/dot/dot.template.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M347.78,-700C347.78,-700 350.28,-700 350.28,-700"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="350.28,-702.1 356.28,-700 350.28,-697.9 350.28,-702.1"/>
</g>
<!-- src/render/dot/state&#45;transformers.js -->
<g id="node28" class="node">
<title>src/render/dot/state&#45;transformers.js</title>
<g id="a_node28"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/dot/state-transformers.js" xlink:title="src/render/dot/&lt;BR/&gt;&lt;B&gt;state&#45;transformers.js&lt;/B&gt;">
<path fill="#ccccff" stroke="black" d="M293.63,-746.69C293.63,-746.69 202.97,-746.69 202.97,-746.69 198.63,-746.69 194.3,-742.35 194.3,-738.02 194.3,-738.02 194.3,-729.35 194.3,-729.35 194.3,-725.02 198.63,-720.69 202.97,-720.69 202.97,-720.69 293.63,-720.69 293.63,-720.69 297.97,-720.69 302.3,-725.02 302.3,-729.35 302.3,-729.35 302.3,-738.02 302.3,-738.02 302.3,-742.35 297.97,-746.69 293.63,-746.69"/>
<text text-anchor="start" x="218.8" y="-736.49" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/dot/</text>
<text text-anchor="start" x="202.3" y="-727.49" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">state&#45;transformers.js</text>
</a>
</g>
</g>
<!-- src/render/dot/index.js&#45;&gt;src/render/dot/state&#45;transformers.js -->
<g id="edge37" class="edge">
<title>src/render/dot/index.js&#45;&gt;src/render/dot/state&#45;transformers.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M287.47,-712.73C287.47,-712.73 287.47,-714.5 287.47,-714.5"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="285.37,-714.5 287.47,-720.5 289.57,-714.5 285.37,-714.5"/>
</g>
<!-- src/render/dot/transition&#45;transformers.js -->
<g id="node29" class="node">
<title>src/render/dot/transition&#45;transformers.js</title>
<g id="a_node29"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/dot/transition-transformers.js" xlink:title="src/render/dot/&lt;BR/&gt;&lt;B&gt;transition&#45;transformers.js&lt;/B&gt;">
<path fill="#ccccff" stroke="black" d="M428.74,-748.03C428.74,-748.03 319.07,-748.03 319.07,-748.03 314.74,-748.03 310.41,-743.7 310.41,-739.37 310.41,-739.37 310.41,-730.7 310.41,-730.7 310.41,-726.37 314.74,-722.03 319.07,-722.03 319.07,-722.03 428.74,-722.03 428.74,-722.03 433.07,-722.03 437.41,-726.37 437.41,-730.7 437.41,-730.7 437.41,-739.37 437.41,-739.37 437.41,-743.7 433.07,-748.03 428.74,-748.03"/>
<text text-anchor="start" x="344.41" y="-737.83" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/dot/</text>
<text text-anchor="start" x="318.41" y="-728.83" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">transition&#45;transformers.js</text>
</a>
</g>
</g>
<!-- src/render/dot/index.js&#45;&gt;src/render/dot/transition&#45;transformers.js -->
<g id="edge38" class="edge">
<title>src/render/dot/index.js&#45;&gt;src/render/dot/transition&#45;transformers.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M329.03,-712.84C329.03,-712.84 329.03,-715.98 329.03,-715.98"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="326.93,-715.98 329.03,-721.98 331.13,-715.98 326.93,-715.98"/>
</g>
<!-- src/render/dot/utl.js -->
<g id="node30" class="node">
<title>src/render/dot/utl.js</title>
<g id="a_node30"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/dot/utl.js" xlink:title="src/render/dot/&lt;BR/&gt;&lt;B&gt;utl.js&lt;/B&gt;">
<path fill="#ccccff" stroke="black" d="M341.46,-782.04C341.46,-782.04 283.79,-782.04 283.79,-782.04 279.46,-782.04 275.13,-777.71 275.13,-773.38 275.13,-773.38 275.13,-764.71 275.13,-764.71 275.13,-760.38 279.46,-756.04 283.79,-756.04 283.79,-756.04 341.46,-756.04 341.46,-756.04 345.79,-756.04 350.13,-760.38 350.13,-764.71 350.13,-764.71 350.13,-773.38 350.13,-773.38 350.13,-777.71 345.79,-782.04 341.46,-782.04"/>
<text text-anchor="start" x="283.13" y="-771.84" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/dot/</text>
<text text-anchor="start" x="302.13" y="-762.84" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">utl.js</text>
</a>
</g>
</g>
<!-- src/render/dot/index.js&#45;&gt;src/render/dot/utl.js -->
<g id="edge39" class="edge">
<title>src/render/dot/index.js&#45;&gt;src/render/dot/utl.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M306.35,-712.73C306.35,-712.73 306.35,-749.58 306.35,-749.58"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="304.25,-749.58 306.35,-755.58 308.45,-749.58 304.25,-749.58"/>
</g>
<!-- src/render/dot/state&#45;transformers.js&#45;&gt;src/render/dot/utl.js -->
<g id="edge40" class="edge">
<title>src/render/dot/state&#45;transformers.js&#45;&gt;src/render/dot/utl.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M288.71,-746.85C288.71,-746.85 288.71,-749.99 288.71,-749.99"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="286.61,-749.98 288.71,-755.99 290.81,-749.99 286.61,-749.98"/>
</g>
<!-- src/render/dot/transition&#45;transformers.js&#45;&gt;src/render/dot/utl.js -->
<g id="edge41" class="edge">
<title>src/render/dot/transition&#45;transformers.js&#45;&gt;src/render/dot/utl.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M330.27,-748.09C330.27,-748.09 330.27,-749.86 330.27,-749.86"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="328.17,-749.86 330.27,-755.86 332.37,-749.86 328.17,-749.86"/>
</g>
<!-- src/render/scjson/index.js&#45;&gt;src/state&#45;machine&#45;model.js -->
<g id="edge53" class="edge">
<title>src/render/scjson/index.js&#45;&gt;src/state&#45;machine&#45;model.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M490.98,-400.66C490.98,-400.66 490.98,-361.32 490.98,-361.32"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="493.08,-361.32 490.98,-355.32 488.88,-361.32 493.08,-361.32"/>
</g>
<!-- src/render/scjson/make&#45;valid&#45;event&#45;names.js -->
<g id="node36" class="node">
<title>src/render/scjson/make&#45;valid&#45;event&#45;names.js</title>
<g id="a_node36"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/scjson/make-valid-event-names.js" xlink:title="src/render/scjson/&lt;BR/&gt;&lt;B&gt;make&#45;valid&#45;event&#45;names.js&lt;/B&gt;">
<path fill="#ccccff" stroke="black" d="M589.45,-526.08C589.45,-526.08 473.78,-526.08 473.78,-526.08 469.45,-526.08 465.11,-521.74 465.11,-517.41 465.11,-517.41 465.11,-508.74 465.11,-508.74 465.11,-504.41 469.45,-500.08 473.78,-500.08 473.78,-500.08 589.45,-500.08 589.45,-500.08 593.78,-500.08 598.11,-504.41 598.11,-508.74 598.11,-508.74 598.11,-517.41 598.11,-517.41 598.11,-521.74 593.78,-526.08 589.45,-526.08"/>
<text text-anchor="start" x="495.11" y="-515.88" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/scjson/</text>
<text text-anchor="start" x="473.11" y="-506.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">make&#45;valid&#45;event&#45;names.js</text>
</a>
</g>
</g>
<!-- src/render/scjson/index.js&#45;&gt;src/render/scjson/make&#45;valid&#45;event&#45;names.js -->
<g id="edge54" class="edge">
<title>src/render/scjson/index.js&#45;&gt;src/render/scjson/make&#45;valid&#45;event&#45;names.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M497.47,-427.16C497.47,-427.16 497.47,-493.89 497.47,-493.89"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="495.37,-493.89 497.47,-499.89 499.57,-493.89 495.37,-493.89"/>
</g>
<!-- src/render/scjson/make&#45;valid&#45;xml&#45;name.js -->
<g id="node37" class="node">
<title>src/render/scjson/make&#45;valid&#45;xml&#45;name.js</title>
<g id="a_node37"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/scjson/make-valid-xml-name.js" xlink:title="src/render/scjson/&lt;BR/&gt;&lt;B&gt;make&#45;valid&#45;xml&#45;name.js&lt;/B&gt;">
<path fill="#ccccff" stroke="black" d="M517.08,-560.13C517.08,-560.13 415.41,-560.13 415.41,-560.13 411.08,-560.13 406.75,-555.8 406.75,-551.47 406.75,-551.47 406.75,-542.8 406.75,-542.8 406.75,-538.47 411.08,-534.13 415.41,-534.13 415.41,-534.13 517.08,-534.13 517.08,-534.13 521.41,-534.13 525.75,-538.47 525.75,-542.8 525.75,-542.8 525.75,-551.47 525.75,-551.47 525.75,-555.8 521.41,-560.13 517.08,-560.13"/>
<text text-anchor="start" x="429.75" y="-549.93" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/scjson/</text>
<text text-anchor="start" x="414.75" y="-540.93" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">make&#45;valid&#45;xml&#45;name.js</text>
</a>
</g>
</g>
<!-- src/render/scjson/index.js&#45;&gt;src/render/scjson/make&#45;valid&#45;xml&#45;name.js -->
<g id="edge55" class="edge">
<title>src/render/scjson/index.js&#45;&gt;src/render/scjson/make&#45;valid&#45;xml&#45;name.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M457.02,-427.04C457.02,-427.04 457.02,-527.91 457.02,-527.91"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="454.92,-527.91 457.02,-533.91 459.12,-527.91 454.92,-527.91"/>
</g>
<!-- src/render/scxml/index.js&#45;&gt;src/render/scjson/index.js -->
<g id="edge56" class="edge">
<title>src/render/scxml/index.js&#45;&gt;src/render/scjson/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M437.35,-448C444.12,-448 448.93,-448 448.93,-448 448.93,-448 448.93,-432.91 448.93,-432.91"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="451.03,-432.91 448.93,-426.91 446.83,-432.91 451.03,-432.91"/>
</g>
<!-- src/render/scxml/scxml.states.template.js -->
<g id="node38" class="node">
<title>src/render/scxml/scxml.states.template.js</title>
<g id="a_node38"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/scxml/scxml.states.template.js" xlink:title="src/render/scxml/&lt;BR/&gt;&lt;B&gt;scxml.states.template.js&lt;/B&gt;">
<polygon fill="#ccccff" stroke="black" points="567.94,-621.36 445.94,-621.36 445.94,-595.36 567.94,-595.36 567.94,-621.36"/>
<text text-anchor="start" x="471.94" y="-611.16" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/scxml/</text>
<text text-anchor="start" x="453.94" y="-602.16" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">scxml.states.template.js</text>
</a>
</g>
</g>
<!-- src/render/scxml/index.js&#45;&gt;src/render/scxml/scxml.states.template.js -->
<g id="edge57" class="edge">
<title>src/render/scxml/index.js&#45;&gt;src/render/scxml/scxml.states.template.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M388.28,-461.52C388.28,-499.67 388.28,-607 388.28,-607 388.28,-607 439.87,-607 439.87,-607"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="439.87,-609.1 445.87,-607 439.87,-604.9 439.87,-609.1"/>
</g>
<!-- src/render/scxml/scxml.template.js -->
<g id="node39" class="node">
<title>src/render/scxml/scxml.template.js</title>
<g id="a_node39"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/scxml/scxml.template.js" xlink:title="src/render/scxml/&lt;BR/&gt;&lt;B&gt;scxml.template.js&lt;/B&gt;">
<polygon fill="#ccccff" stroke="black" points="436.67,-644.64 344.67,-644.64 344.67,-618.64 436.67,-618.64 436.67,-644.64"/>
<text text-anchor="start" x="355.67" y="-634.44" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/scxml/</text>
<text text-anchor="start" x="352.67" y="-625.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">scxml.template.js</text>
</a>
</g>
</g>
<!-- src/render/scxml/index.js&#45;&gt;src/render/scxml/scxml.template.js -->
<g id="edge58" class="edge">
<title>src/render/scxml/index.js&#45;&gt;src/render/scxml/scxml.template.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M369.81,-461.45C369.81,-461.45 369.81,-612.58 369.81,-612.58"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="367.71,-612.58 369.81,-618.58 371.91,-612.58 367.71,-612.58"/>
</g>
<!-- src/render/smcat/smcat.template.js -->
<g id="node40" class="node">
<title>src/render/smcat/smcat.template.js</title>
<g id="a_node40"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/smcat/smcat.template.js" xlink:title="src/render/smcat/&lt;BR/&gt;&lt;B&gt;smcat.template.js&lt;/B&gt;">
<polygon fill="#ccccff" stroke="black" points="247.27,-544.42 154.27,-544.42 154.27,-518.42 247.27,-518.42 247.27,-544.42"/>
<text text-anchor="start" x="165.77" y="-534.22" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/smcat/</text>
<text text-anchor="start" x="162.27" y="-525.22" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">smcat.template.js</text>
</a>
</g>
</g>
<!-- src/render/smcat/index.js&#45;&gt;src/render/smcat/smcat.template.js -->
<g id="edge59" class="edge">
<title>src/render/smcat/index.js&#45;&gt;src/render/smcat/smcat.template.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M218.27,-450.74C218.27,-450.74 218.27,-512.2 218.27,-512.2"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="216.17,-512.2 218.27,-518.2 220.37,-512.2 216.17,-512.2"/>
</g>
<!-- src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.js&#45;&gt;src/options.js -->
<g id="edge60" class="edge">
<title>src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.js&#45;&gt;src/options.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M226.66,-288.43C226.66,-256.53 226.66,-178 226.66,-178 226.66,-178 170.53,-178 170.53,-178"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="170.53,-175.9 164.53,-178 170.53,-180.1 170.53,-175.9"/>
</g>
<!-- src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.js&#45;&gt;src/render/dot/index.js -->
<g id="edge61" class="edge">
<title>src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.js&#45;&gt;src/render/dot/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M279.27,-314.95C279.27,-369.95 279.27,-577 279.27,-577 279.27,-577 288.08,-577 288.08,-577 288.08,-577 288.08,-680.55 288.08,-680.55"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="285.98,-680.55 288.08,-686.55 290.18,-680.55 285.98,-680.55"/>
</g>
<!-- src/render/vector/dot&#45;to&#45;vector&#45;native.js -->
<g id="node41" class="node">
<title>src/render/vector/dot&#45;to&#45;vector&#45;native.js</title>
<g id="a_node41"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/vector/dot-to-vector-native.js" xlink:title="src/render/vector/&lt;BR/&gt;&lt;B&gt;dot&#45;to&#45;vector&#45;native.js&lt;/B&gt;">
<path fill="#ccccff" stroke="black" d="M173.22,-348.68C173.22,-348.68 79.56,-348.68 79.56,-348.68 75.22,-348.68 70.89,-344.35 70.89,-340.02 70.89,-340.02 70.89,-331.35 70.89,-331.35 70.89,-327.02 75.22,-322.68 79.56,-322.68 79.56,-322.68 173.22,-322.68 173.22,-322.68 177.56,-322.68 181.89,-327.02 181.89,-331.35 181.89,-331.35 181.89,-340.02 181.89,-340.02 181.89,-344.35 177.56,-348.68 173.22,-348.68"/>
<text text-anchor="start" x="90.89" y="-338.48" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/vector/</text>
<text text-anchor="start" x="78.89" y="-329.48" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">dot&#45;to&#45;vector&#45;native.js</text>
</a>
</g>
</g>
<!-- src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.js&#45;&gt;src/render/vector/dot&#45;to&#45;vector&#45;native.js -->
<g id="edge62" class="edge">
<title>src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.js&#45;&gt;src/render/vector/dot&#45;to&#45;vector&#45;native.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M162.53,-314.72C162.53,-314.72 162.53,-316.5 162.53,-316.5"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="160.43,-316.5 162.53,-322.5 164.63,-316.5 160.43,-316.5"/>
</g>
<!-- src/render/vector/vector&#45;with&#45;viz&#45;js.js&#45;&gt;src/options.js -->
<g id="edge63" class="edge">
<title>src/render/vector/vector&#45;with&#45;viz&#45;js.js&#45;&gt;src/options.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M239.76,-361C270.53,-361 304.04,-361 304.04,-361 304.04,-361 304.04,-174 304.04,-174 304.04,-174 170.78,-174 170.78,-174"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="170.78,-171.9 164.78,-174 170.78,-176.1 170.78,-171.9"/>
</g>
<!-- src/render/vector/vector&#45;with&#45;viz&#45;js.js&#45;&gt;src/render/dot/index.js -->
<g id="edge64" class="edge">
<title>src/render/vector/vector&#45;with&#45;viz&#45;js.js&#45;&gt;src/render/dot/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M139.52,-369C119.62,-369 101.36,-369 101.36,-369 101.36,-369 101.36,-705 101.36,-705 101.36,-705 266.34,-705 266.34,-705"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="266.34,-707.1 272.34,-705 266.34,-702.9 266.34,-707.1"/>
</g>
</g>
</svg>
<script>document.body.onmouseover = getHighlightHandler();

function getHighlightHandler() {
  /** @type {string} */
  var currentHighlightedTitle;

  /** @type {NodeListOf<SVGGElement>} */
  var nodes = document.querySelectorAll(".node");
  /** @type {NodeListOf<SVGGElement>} */
  var edges = document.querySelectorAll(".edge");
  var title2ElementMap = new Title2ElementMap(edges, nodes);

  /** @param {MouseEvent} pMouseEvent */
  return function highlightHandler(pMouseEvent) {
    var closestNodeOrEdge = pMouseEvent.target.closest(".edge, .node");
    var closestTitleText = getTitleText(closestNodeOrEdge);

    if (!(currentHighlightedTitle === closestTitleText)) {
      title2ElementMap.get(currentHighlightedTitle).forEach(removeHighlight);
      title2ElementMap.get(closestTitleText).forEach(addHighlight);
      currentHighlightedTitle = closestTitleText;
    }
  };
}

/**
 *
 * @param {SVGGelement[]} pEdges
 * @param {SVGGElement[]} pNodes
 * @return {{get: (pTitleText:string) => SVGGElement[]}}
 */
function Title2ElementMap(pEdges, pNodes) {
  /* {{[key: string]: SVGGElement[]}} */
  var elementMap = buildMap(pEdges, pNodes);

  /**
   * @param {NodeListOf<SVGGElement>} pEdges
   * @param {NodeListOf<SVGGElement>} pNodes
   * @return {{[key: string]: SVGGElement[]}}
   */
  function buildMap(pEdges, pNodes) {
    var title2NodeMap = buildTitle2NodeMap(pNodes);

    return nodeListToArray(pEdges).reduce(addEdgeToMap(title2NodeMap), {});
  }
  /**
   * @param {NodeListOf<SVGGElement>} pNodes
   * @return {{[key: string]: SVGGElement}}
   */
  function buildTitle2NodeMap(pNodes) {
    return nodeListToArray(pNodes).reduce(addNodeToMap, {});
  }

  function addNodeToMap(pMap, pNode) {
    var titleText = getTitleText(pNode);

    if (titleText) {
      pMap[titleText] = pNode;
    }
    return pMap;
  }

  function addEdgeToMap(pNodeMap) {
    return function (pEdgeMap, pEdge) {
      /** @type {string} */
      var titleText = getTitleText(pEdge);

      if (titleText) {
        var edge = pryEdgeFromTitle(titleText);

        pEdgeMap[titleText] = [pNodeMap[edge.from], pNodeMap[edge.to]];
        (pEdgeMap[edge.from] || (pEdgeMap[edge.from] = [])).push(pEdge);
        (pEdgeMap[edge.to] || (pEdgeMap[edge.to] = [])).push(pEdge);
      }
      return pEdgeMap;
    };
  }

  /**
   *
   * @param {string} pString
   * @return {{from?: string; to?:string;}}
   */
  function pryEdgeFromTitle(pString) {
    var nodeNames = pString.split(/\s*->\s*/);

    return {
      from: nodeNames.shift(),
      to: nodeNames.shift(),
    };
  }
  /**
   *
   * @param {string} pTitleText
   * @return {SVGGElement[]}
   */
  function get(pTitleText) {
    return (pTitleText && elementMap[pTitleText]) || [];
  }
  return {
    get: get,
  };
}

/**
 * @param {SVGGElement} pGElement
 * @return {string?}
 */
function getTitleText(pGElement) {
  /** @type {SVGTitleElement} */
  var title = pGElement && pGElement.querySelector("title");
  /** @type {string} */
  var titleText = title && title.textContent;

  if (titleText) {
    titleText = titleText.trim();
  }
  return titleText;
}

/**
 * @param {NodeListOf<Element>} pNodeList
 * @return {Element[]}
 */
function nodeListToArray(pNodeList) {
  var lReturnValue = [];

  pNodeList.forEach(function (pElement) {
    lReturnValue.push(pElement);
  });

  return lReturnValue;
}

/**
 * @param {SVGGElement} pGElement
 */
function removeHighlight(pGElement) {
  if (pGElement && pGElement.classList) {
    pGElement.classList.remove("current");
  }
}

/**
 * @param {SVGGElement} pGroup
 */
function addHighlight(pGroup) {
  if (pGroup && pGroup.classList) {
    pGroup.classList.add("current");
  }
}
</script>  </body>
</html>
